install.packages("plotly")
install.packages("rgl")
install.packages("plot3D")
install.packages(tidyverse)
install.packages(dplyr)
install.packages(GGally)

library("plotly")
Loading required package: ggplot2
Registered S3 method overwritten by 'data.table':
  method           from
  print.data.table     
Registered S3 method overwritten by 'htmlwidgets':
  method           from         
  print.htmlwidget tools:rstudio

Attaching package: ‘plotly’

The following object is masked from ‘package:ggplot2’:

    last_plot

The following object is masked from ‘package:stats’:

    filter

The following object is masked from ‘package:graphics’:

    layout
library("plot3D")
library(tidyverse) # entorno tidy
Registered S3 methods overwritten by 'dbplyr':
  method         from
  print.tbl_lazy     
  print.tbl_sql      
── Attaching packages ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── tidyverse 1.3.0 ──
✓ tibble  3.1.6     ✓ dplyr   1.0.7
✓ tidyr   1.1.4     ✓ stringr 1.4.0
✓ readr   2.1.2     ✓ forcats 0.5.1
✓ purrr   0.3.4     
── Conflicts ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── tidyverse_conflicts() ──
x dplyr::filter() masks plotly::filter(), stats::filter()
x dplyr::lag()    masks stats::lag()
library(dplyr) # manejo de datos
library(GGally) # scatterplots multiples
Registered S3 method overwritten by 'GGally':
  method from   
  +.gg   ggplot2
library(rgl) # para graficos 3D
This build of rgl does not include OpenGL functions.  Use
 rglwidget() to display results, e.g. via options(rgl.printRglwidget = TRUE).
df = read.csv("datos_alquiler_crossvalidation.csv", stringsAsFactors = F)
bootstrap=function(dataset, formula, sizeGroup, amountOfGroups){
  coeficientes=list()
  for (i in 1:amountOfGroups) {
    grupo = dataset[sample(nrow(dataset), sizeGroup, replace = T), ]
    modeloActual = lm(formula, data = grupo)
    coeficiente = list(modeloActual$coefficients)
    coeficientes[i] = coeficiente
  }
  return(coeficientes)
}
formu = formula(price~surface_covered+fondo)
l = bootstrap(df, formu, 10, 10000)
mu = c()
alpha = c()
beta = c()
for (i in 1:length(l)) {
  mu[i] = l[[i]][1]
  alpha[i] = l[[i]][2]
  beta[i] = l[[i]][3]
}
fig <- plot_ly(x=~beta, y=~alpha, z=~mu, type="scatter3d", mode="markers",xlab = 'beta (fondo)', ylab= 'alpha (sur cov)', zlab = 'mu (intercept)', size = 1)
fig <- fig %>% layout(title = 'Bootsrap',
         xaxis = list(title = 'beta',
                      zeroline = TRUE,
                      range = c(0, 250)),
         yaxis = list(title = 'Alpha',
                      range = c(0,1400)))

fig
Warning: 'scatter3d' objects don't have these attributes: 'xlab', 'ylab', 'zlab'
Valid attributes include:
'connectgaps', 'customdata', 'customdatasrc', 'error_x', 'error_y', 'error_z', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'hovertext', 'hovertextsrc', 'ids', 'idssrc', 'legendgroup', 'legendgrouptitle', 'legendrank', 'line', 'marker', 'meta', 'metasrc', 'mode', 'name', 'opacity', 'projection', 'scene', 'showlegend', 'stream', 'surfaceaxis', 'surfacecolor', 'text', 'textfont', 'textposition', 'textpositionsrc', 'textsrc', 'texttemplate', 'texttemplatesrc', 'transforms', 'type', 'uid', 'uirevision', 'visible', 'x', 'xcalendar', 'xhoverformat', 'xsrc', 'y', 'ycalendar', 'yhoverformat', 'ysrc', 'z', 'zcalendar', 'zhoverformat', 'zsrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

Warning: 'scatter3d' objects don't have these attributes: 'xlab', 'ylab', 'zlab'
Valid attributes include:
'connectgaps', 'customdata', 'customdatasrc', 'error_x', 'error_y', 'error_z', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'hovertext', 'hovertextsrc', 'ids', 'idssrc', 'legendgroup', 'legendgrouptitle', 'legendrank', 'line', 'marker', 'meta', 'metasrc', 'mode', 'name', 'opacity', 'projection', 'scene', 'showlegend', 'stream', 'surfaceaxis', 'surfacecolor', 'text', 'textfont', 'textposition', 'textpositionsrc', 'textsrc', 'texttemplate', 'texttemplatesrc', 'transforms', 'type', 'uid', 'uirevision', 'visible', 'x', 'xcalendar', 'xhoverformat', 'xsrc', 'y', 'ycalendar', 'yhoverformat', 'ysrc', 'z', 'zcalendar', 'zhoverformat', 'zsrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'
mean(mu)
[1] 2836.538
mean(alpha)
[1] 276.2949
mean(beta)
[1] 38.44521
lm(formu, data = df)$coefficients
    (Intercept) surface_covered           fondo 
     2799.94910       274.71754        36.46581 
LS0tCnRpdGxlOiAiQ2xhc2UgYm9vdHN0cmFwIgpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sKLS0tCmBgYHtyfQoKaW5zdGFsbC5wYWNrYWdlcygicGxvdGx5IikKaW5zdGFsbC5wYWNrYWdlcygicmdsIikKaW5zdGFsbC5wYWNrYWdlcygicGxvdDNEIikKaW5zdGFsbC5wYWNrYWdlcyh0aWR5dmVyc2UpCmluc3RhbGwucGFja2FnZXMoZHBseXIpCmluc3RhbGwucGFja2FnZXMoR0dhbGx5KQoKYGBgCmBgYHtyfQoKbGlicmFyeSgicGxvdGx5IikKbGlicmFyeSgicGxvdDNEIikKbGlicmFyeSh0aWR5dmVyc2UpICMgZW50b3JubyB0aWR5CmxpYnJhcnkoZHBseXIpICMgbWFuZWpvIGRlIGRhdG9zCmxpYnJhcnkoR0dhbGx5KSAjIHNjYXR0ZXJwbG90cyBtdWx0aXBsZXMKbGlicmFyeShyZ2wpICMgcGFyYSBncmFmaWNvcyAzRAoKYGBgCgoKYGBge3J9CmRmID0gcmVhZC5jc3YoImRhdG9zX2FscXVpbGVyX2Nyb3NzdmFsaWRhdGlvbi5jc3YiLCBzdHJpbmdzQXNGYWN0b3JzID0gRikKYGBgCgpgYGB7cn0KYm9vdHN0cmFwPWZ1bmN0aW9uKGRhdGFzZXQsIGZvcm11bGEsIHNpemVHcm91cCwgYW1vdW50T2ZHcm91cHMpewogIGNvZWZpY2llbnRlcz1saXN0KCkKICBmb3IgKGkgaW4gMTphbW91bnRPZkdyb3VwcykgewogICAgZ3J1cG8gPSBkYXRhc2V0W3NhbXBsZShucm93KGRhdGFzZXQpLCBzaXplR3JvdXAsIHJlcGxhY2UgPSBUKSwgXQogICAgbW9kZWxvQWN0dWFsID0gbG0oZm9ybXVsYSwgZGF0YSA9IGdydXBvKQogICAgY29lZmljaWVudGUgPSBsaXN0KG1vZGVsb0FjdHVhbCRjb2VmZmljaWVudHMpCiAgICBjb2VmaWNpZW50ZXNbaV0gPSBjb2VmaWNpZW50ZQogIH0KICByZXR1cm4oY29lZmljaWVudGVzKQp9CmBgYAoKYGBge3J9CmZvcm11ID0gZm9ybXVsYShwcmljZX5zdXJmYWNlX2NvdmVyZWQrZm9uZG8pCmwgPSBib290c3RyYXAoZGYsIGZvcm11LCAxMCwgMTAwMDApCm11ID0gYygpCmFscGhhID0gYygpCmJldGEgPSBjKCkKZm9yIChpIGluIDE6bGVuZ3RoKGwpKSB7CiAgbXVbaV0gPSBsW1tpXV1bMV0KICBhbHBoYVtpXSA9IGxbW2ldXVsyXQogIGJldGFbaV0gPSBsW1tpXV1bM10KfQpmaWcgPC0gcGxvdF9seSh4PX5iZXRhLCB5PX5hbHBoYSwgej1+bXUsIHR5cGU9InNjYXR0ZXIzZCIsIG1vZGU9Im1hcmtlcnMiLHhsYWIgPSAnYmV0YSAoZm9uZG8pJywgeWxhYj0gJ2FscGhhIChzdXIgY292KScsIHpsYWIgPSAnbXUgKGludGVyY2VwdCknLCBzaXplID0gMSkKZmlnIDwtIGZpZyAlPiUgbGF5b3V0KHRpdGxlID0gJ0Jvb3RzcmFwJywKICAgICAgICAgeGF4aXMgPSBsaXN0KHRpdGxlID0gJ2JldGEnLAogICAgICAgICAgICAgICAgICAgICAgemVyb2xpbmUgPSBUUlVFLAogICAgICAgICAgICAgICAgICAgICAgcmFuZ2UgPSBjKDAsIDI1MCkpLAogICAgICAgICB5YXhpcyA9IGxpc3QodGl0bGUgPSAnQWxwaGEnLAogICAgICAgICAgICAgICAgICAgICAgcmFuZ2UgPSBjKDAsMTQwMCkpKQoKZmlnCmBgYApgYGB7cn0KbWVhbihtdSkKbWVhbihhbHBoYSkKbWVhbihiZXRhKQoKCmxtKGZvcm11LCBkYXRhID0gZGYpJGNvZWZmaWNpZW50cwpgYGAKCg==